var autodb = require('../../db/auto.db')
var config = require('../../config')
var async = require('async')
var logger = require('../../logger')
var emit = require('../../emit')

function fileaddtag(isMusic, fileid, tag, cb) {
    async.waterfall([
        (callback) => {
            autodb.getfileinfo(isMusic, fileid, (err, info) => {
                callback(err, info);
            });
        },

        (info, callback) => {
            autodb.addtag(isMusic, fileid, info.maintag, info.childtag, tag, (err) => {
                callback(err);
            });
        }
    ], (err) => {
        cb(err);
    })
}

function onsocket(socket, data) {
    if (data.tag == null) {
        return logger.log('data.tag is null');
    }
    var tag = data.tag.toLowerCase();
    async.forEach(data.ids, (id, cb) => {
        fileaddtag(data.isMusic, id, tag, (err) => {
            cb(err);
        });
    }, (err) => {
        if (config.debug) {
            logger.log(err);
        }
        else {
            var protocol = data.isMusic ? 'addtag-music' : 'addtag-sound';
            var result = err ? false : true;
            emit.send(socket, protocol, result);
        }
    })
}

module.exports = {
    onsocket
}